<?php
/**
 * @see ZendX_JQuery_View_Helper_UiWidget
 */
require_once "ZendX/JQuery/View/Helper/UiWidget.php";

/**
 * Помощник вида, реализующий календарь на основе JQuery UI.Datepicker и TimePicker аддона от Trent Richardson
 * Надо в дальнейшем будет перейти на DateTimePicker от JQuery (есть на гитхабе https://github.com/jquery/jquery-ui, но не работает правильно)
 * Для удобства добавлена поддерживаемая аддоном опция addSliderAccess из плагина jQuery UI Slider Access
 * 
 * @category Phorm
 * @package JQuery_View_Helper
 * @name /Phorm/JQuery/View/Helper/DatetimePicker.php
 * @copyright phorm.ru
 * @since 23.01.2011
 * @author vladimir@kachalov.net
 */

class Phorm_JQuery_View_Helper_DatetimePicker extends ZendX_JQuery_View_Helper_UiWidget {
	
	/**
	 * Рисуем кнопку
	 *
	 * @param string $id Id HTML-элемента
	 * @param string $value Значение элемента
	 * @param array $params Массив параметров, передаваемых в JS-скрипт инициализации UI-компоненты
	 * @param array $attribs Массив атрибутов HTML-элемента
	 * @return string
	 */
    
	public function datetimePicker($id, $value = null, array $params = array(), array $attribs = array()) {
		
		$attribs = $this->_prepareAttributes($id, $value, $attribs);
		
		$attribs['data-widget'] = 'datetimepicker';
		
		if(!isset($params['dateFormat']) && Zend_Registry::isRegistered('Zend_Locale')) {
            $params['dateFormat'] = ZendX_JQuery_View_Helper_DatePicker::resolveZendLocaleToDatePickerFormat();
        }
        
        $params['addSliderAccess'] = true;
        $params['sliderAccessArgs'] = array('touchonly' => false);
		
		if(count($params) > 0) {
            $params = ZendX_JQuery::encodeJson($params);
	    } else {
	        $params = "{}";
	    }

        $js = sprintf('%s("form").on("mousemove",function(){%s("[data-widget=datetimepicker]").datetimepicker(%s)});',
            ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(),
            ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(),
            $params
        );

        $this->jquery->addJavascriptFile($this->view->BaseUrl().'/ui/js/jquery.ui.timepicker.addon.js');
        $this->jquery->addJavascriptFile($this->view->BaseUrl().'/ui/js/jquery.ui.sliderAccess.js');
        $this->jquery->addOnLoad($js);
        
        if($value != null) $value = Phorm_Format_Date::datetime($value);

	    return $this->view->formText($id, $value, $attribs);
		
	}
	
}